var fs = require("fs");
// var readline = require("linebyline");
/**
 * 从文件中获取所有接口信息。
 * @returns 返回所有接口
 */
function findAllApi() {
  function readFileList(path, fileList) {
    var files = fs.readdirSync(path);
    files.forEach(function (itm, index) {
      var stat = fs.statSync(path + itm);
      if (stat.isDirectory()) {
        //递归读取文件
        readFileList(path + itm + "/", fileList);
      } else {
        if (!itm.startsWith(".")) {
          readAsString(path + itm, fileList);
        }
      }
    });
  }

  function readAsString(file, fileList) {
    //方案一，同步等待执行。获取完成后，才进行下步操作。
    var data = fs.readFileSync(file, "utf-8");
    if (!data.includes("@Api(name=")) {
      return;
    }
    console.log("[开始扫描文件]", file);
    var lines = data.split(/\r?\n/);
    lines.forEach((line) => {
      if (line.includes("@Api(name=")) {
        fileList.push(line.substring(line.indexOf("=") + 2, line.length - 2));
      }
    });
    //方案二，不是同步执行。
    // line = readline(file);
    // line
    //   .on("line", function (line, lineCount, byteCount) {
    //     if (line.includes("@Api(name=")) {
    //       console.log("data", line);
    //       console.log("lineCount", lineCount);
    //       console.log("byteCount", byteCount);
    //       fileList.push(line);
    //     }
    //   })
    //   .on("error", function (error) {
    //     console.log("error", error);
    //   });
  }

  var getFiles = {
    getFileList: function (path) {
      readFileList(path, filesList);
      return filesList;
    },
  };
  console.log("[-----获取所有的接口信息开始-----]");
  var filesList = [];
  getFiles.getFileList(
    "/Users/fronchdarly/WorkSpace/Enoad/Ser/darly-enoad-service/src/rests/"
  );
  console.log("[扫描到的所有接口：]", filesList);
  console.log("[-----获取所有的接口信息完成-----]");
  return filesList;
}

module.exports = findAllApi;
